package com.sunb2b.web.controller;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.WebRequest;

import com.sunb2b.entity.Member;

@Controller
public class UtilController {
	private Color getRandColor(int fc, int bc) {   
        Random random = new Random();   
        if (fc > 255)   
            fc = 255;   
        if (bc > 255)   
            bc = 255;   
        int r = fc + random.nextInt(bc - fc);   
        int g = fc + random.nextInt(bc - fc);   
        int b = fc + random.nextInt(bc - fc);   
        return new Color(r, g, b);   
    }
	
    @RequestMapping(value="/validCode", method=RequestMethod.GET)
    public void validCode(WebRequest request, HttpServletResponse response, HttpSession session) throws IOException{
    	String type = request.getParameter("tpye");
    	response.setHeader("Pragma", "No-cache");   
        response.setHeader("Cache-Control", "no-cache");   
        response.setDateHeader("Expires", 0);
        int width = 60, height = 20;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   
      
        Graphics g = image.getGraphics();   
      
        Random random = new Random();   
      
        g.setColor(getRandColor(200, 250));   
        g.fillRect(0, 0, width, height);   
      
        g.setFont(new Font("Times New Roman", Font.PLAIN, 18));   
      
        //g.setColor(new Color());   
        //g.drawRect(0,0,width-1,height-1);   
      
        // generate some random noise lines;   
        g.setColor(getRandColor(160, 200));   
        for (int i = 0; i < 100; i++) {   
            int x = random.nextInt(width);   
            int y = random.nextInt(height);   
            int xl = random.nextInt(12);   
            int yl = random.nextInt(12);   
            g.drawLine(x, y, x + xl, y + yl);   
        }   
      
        // generate 4 random numbers;
        String sRand = "";   
        for (int i = 0; i < 4; i++) {   
            String rand = String.valueOf(random.nextInt(10));   
            sRand += rand;   
            // draw the number to picture
            g.setColor(new Color(20 + random.nextInt(110), 20 + random   
            .nextInt(110), 20 + random.nextInt(110)));   
            g.drawString(rand, 13 * i + 6, 16);   
        }   
        String validCodeName;
        // set into session;  
        session.setAttribute("validCode", sRand);
        /**
        if(type==null||"login".equals(type)){
        	//session.setAttribute("loginValidCode", sRand);
        	validCodeName = "loginValidCode";
        }
        else if("register".equals(type)){
        	validCodeName = "registerValidCode";
        }
        else if("add"){
        	
        }**/
        // 
        g.dispose();   
        // 
        ImageIO.write(image, "JPEG", response.getOutputStream());
    }
    
    @RequestMapping(value="/checkLogin")
    public @ResponseBody String checkUser(HttpServletRequest request, HttpSession session){
    	Member m = (Member)session.getAttribute("member");
    	if(m!=null){
    		return "yes";
    	}
    	return "no";
    }
}
